package com.thb.pay.core.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * @类名称 ProxyHandler
 * @类描述 <pre></pre>
 * @作者 xufuzhou xufuzhou@tansun.com.cn
 * @创建时间 2019/8/29
 * @版本 v1.01
 * @修改记录 <pre>
 * 版本 修改人 修改时间 修改内容描述
 * ----------------------------------------------
 * 1.00 卢世杰 20170701 新建
 * 1.01 洪金龙 20170801 修改规则查询
 * ----------------------------------------------
 * </pre>
 */
public class ProxyHandler implements InvocationHandler {

    private Object delegate;

    public Object build(Object delegate) {
        this.delegate = delegate;
        return Proxy.newProxyInstance(this.delegate.getClass().getClassLoader(), this.delegate.getClass().getInterfaces(), this);
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println(proxy.getClass().getName());
        System.out.println(this.delegate.getClass().getName());

        return method.invoke(delegate, args);
    }
}
